home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Windows Game Programming for Dummies (2nd Edition)
/
WinGamProgFD.iso
/
mac
/
DirectX SDK
/
DXSDK
/
samples
/
Multimedia
/
DirectShow_WinXP
/
VMR
/
VMRMix
/
Demonstration.h
< prev
next >
Wrap
C/C++ Source or Header
|
2001-10-08
|
3KB
|
95 lines
//------------------------------------------------------------------------------
// File: Demonstration.h
//
// Desc: DirectShow sample code
// Header file and class description for CDemonstration,
// "special effects" module to represent capabilities of VMR.
// This class is called from CVMRMixDlg by the "Play" button.
// CDemonstration contains CVMRCore member (VMR engine), through which
// it performs initialization of the graph builder and presentation.
//
// Copyright (c) 2000-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#ifndef HDR_DEMONSTRATION
#define HDR_DEMONSTRATION
#include "stdafx.h"
class CVMRMixDlg;
class CDemonstration
{
private:
CVMRMixDlg * m_pDlg; // 'parent' dialog
char m_szMsg[MAX_PATH]; // auxiliary string for debug messages
bool m_bInitialized; // true if graph is build and files are rendered;
// false otherwise
CMediaList m_MList; // media list to be played
CVMRCore * m_pCore; // 'main' class that implements VMR management
VMRALPHABITMAP m_sBmpParams; // used in IVMRMixerBitmap; parameters
// of the bitmap overlapping the video
HBITMAP m_hbmp; // handle to the bitmap overlapping the video
HRESULT SetAlphaBitmapColorKey(UINT ImageID); // set color key for overlapping bitmap
HRESULT GetValidVMRBitmap(UINT ImageID); // create bitmap compatible with renderer's settings
public:
CDemonstration( CVMRMixDlg * pDlg, // 'parent' dialog
CMediaList * pMajorList,// media list to play
int nSize, // size of pMajorList
HRESULT *phr) :
m_pDlg(pDlg),
m_hbmp(NULL),
m_pCore(NULL),
m_bInitialized(false)
{
ASSERT(phr);
ASSERT( nSize > 0);
strcpy( m_szMsg, "");
*phr = S_OK;
ZeroMemory( &m_sBmpParams, sizeof(VMRALPHABITMAP));
srand( clock());
pMajorList->Shuffle();
if( false == pMajorList->Clone(nSize, &m_MList))
{
*phr = E_INVALIDARG;
return;
}
};
virtual ~CDemonstration()
{
if( m_pCore )
{
delete m_pCore;
}
if( m_hbmp)
{
DeleteObject( m_hbmp );
}
if( m_sBmpParams.hdc )
{
DeleteDC( m_sBmpParams.hdc );
}
m_MList.Clean();
};
HRESULT Initialize();
HRESULT UpdateStreams(clock_t tStart);
virtual HRESULT Perform();
// this function calculates parameters for the 'swirling windows' effect
void FountainPath( long t,
long T,
int n,
NORMALIZEDRECT r0,
double A0,
NORMALIZEDRECT * pR,
double * pA);
};
#endif